﻿using K3Cloud.WebApi.Core.IoC.K3Client;
using Microsoft.Extensions.Configuration;
using System;

namespace K3Cloud.WebApi.Core.IoC;
/// <summary>
/// K3CloudHelper 提供K3CloudApiClient实例的创建辅助方法。
/// 支持通过默认配置或指定配置Key动态创建API客户端。
/// </summary>
public class K3CloudHelper
{
    /// <summary>
    /// 创建新的K3CloudApiClient实例。
    /// 若未指定configKey，则使用全局默认配置；否则根据appsettings.json中指定Key读取配置。
    /// </summary>
    /// <param name="configKey">配置Key（对应appsettings.json的K3CLOUDCONFIG子节点）</param>
    /// <returns>K3CloudApiClient实例</returns>
    /// <exception cref="ArgumentNullException">指定Key未找到配置时抛出</exception>
    public static K3CloudApiClient GetNewK3cloudClient(string? configKey = default)
    {
        if (string.IsNullOrEmpty(configKey))
        {
            return new(K3IOCServiceCollectionExtensions.Configs);
        }

        IConfigurationRoot builder = new ConfigurationBuilder().AddInMemoryCollection().AddJsonFile("appsettings.json", false).Build();
        K3Config? k3Config = builder.GetSection($"K3CLOUDCONFIG:{configKey}").Get<K3Config>();
        return k3Config == null ? throw new ArgumentNullException(configKey) : new(k3Config);
    }
}
